/*
 * Copyright (c) 2023 fred
 * Licensed under the Apache License,Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
import { Validate } from '../../helper/Validate';
import { Normalizer } from '../../internal/Normalizer';
import { Evaluator } from '../Evaluator';
export abstract class EvaluatorAttributeKeyPair extends Evaluator {
  key: string
  value: string

  constructor(key: string, value: string, trimValue: boolean = true) {
    super();
    Validate.notEmpty(key,'EvaluatorAttributePair key must not be empty')
    Validate.notEmpty(value,'EvaluatorAttributePair value must not be empty')
    this.key = Normalizer.normalize(key)
    let isStringLiteral = value.startsWith("'") && value.endsWith("'") ||
    value.startsWith('"') && value.endsWith('"')
    if (isStringLiteral) {
      value = value.substring(1, value.length - 1)
    }
    this.value = trimValue ? Normalizer.normalize(key) : Normalizer.normalize(key, isStringLiteral)
  }
}